草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 函数头中的 C/C++ 数组变量

我们可以在C/C++函数头中将数组作为变量传递,如intfunc(intarr[]){...}我想知道:是否有可能在传递到函数头的变量中的[]中包含某些内容,或者它是否始终为空? 最佳答案 对于任何(非引用)类型T,函数签名Rfoo(Tt[])和Rfoo(Tt[123])(或任何其他数字)等同于Rfoo(T*t),通过传递第一个元素的地址来传递数组。请注意,T本身可能是数组类型,例如T=U[10]。 关于c++-函数头中的C/C++数组变量,我们在StackOverflow上找到一个类似

c++ - 结构 (C) 中的 malloc 错误

我在C头文件中有如下代码typedefstruct{kiss_fft_scalarr;kiss_fft_scalari;}kiss_fft_cpx;并且我在测试程序中实现了如下代码kiss_fft_cpx*fin=malloc(4*sizeof(kiss_fft_cpx));它给了我错误消息:“类型为void的值不能用于初始化类型为‘kiss_fft_ctx’的实体”。我正在使用VisualStudioC/C++win32控制台项目。谁能告诉我如何在这里正确使用malloc?谢谢! 最佳答案 你需要像这样转换返回类型:kiss_ff

c++ - 从 C++ 拦截 Fortran STOP

我准备了一个旧版Fortran库的C++接口(interface)。遗留库中的一些子例程遵循丑陋但可用的状态代码约定来报告错误,我使用此类状态代码从我的C++代码中抛出一个可读的异常:它工作得很好。另一方面,有时遗留库调用STOP(终止程序)。即使病情是可以恢复的,它也经常这样做。我想从C++中捕获这个STOP,到目前为止我还没有成功。下面的代码很简单,但恰好代表了手头的问题:Fortran遗留库fmodule.f90:modulefmoduleuseiso_c_bindingcontainssubroutinefsub(x)bind(c,name="fsub")real(c_doub

c++ - 禁用 malloc 中的随机性

我正在运行以下简单的C程序:#include#includeintmain(intargc,char**argv){void*p=malloc(4);fprintf(stderr,"p==%p\n",p);return0;}不同的运行给出不同的结果:p==0x101c010然后:p==0x1ad9010然后:p==0xe77010等等。我记得,过去malloc是完全确定性的。所以可能从某个版本开始,一些随机性被添加到malloc。我现在在Ubuntu上使用gcc-4.6.3。有没有办法消除这种随机性? 最佳答案 如果变化是由地址空间

c++ - void ** 相当于 void * 返回?

void*alligned_malloc(size_tbytes,uint16_tallign){uint16_toffset=allign-1+sizeof(void*);void*p1=malloc(offset+bytes);void**p2=(void**)(((size_t)p1+offset)&~(allign-1));p2[-1]=p1;returnp2;//Whyisthiscorrect?shouldnotthereturnbep2[0]asitisreturningvoid**}请帮助我理解这个修改后的mallocvoid**是如何等同于void*return的?

c++ - fclose 一个已经被 fclose 的文件

在我的程序中,我可能会关闭一个已经关闭的文件。当我对一个已经关闭的文件执行fclose时会发生什么?如果不能这样做,如何知道文件是关闭还是打开? 最佳答案 使用同一流调用fclose两次是未定义的行为-很可能会崩溃。无法检查FILE*是否已经关闭,因此安全的解决方案是在关闭后立即将指针设置为NULL:fclose(fh);fh=NULL;来源:“关联文件关闭后,指向FILE对象的指针的值是不确定的”(C草案标准)。“在调用fclose()之后,对流的任何使用都会导致未定义的行为。”(单一UNIX®规范)。

c++ - 新手在这里 : Different results on PC and MAC. 为什么?

这个问题在这里已经有了答案:Whyaretheseconstructsusingpreandpost-incrementundefinedbehavior?(14个答案)关闭8年前。我现在正在尝试学习C/C++的基础知识。我正在学习Lynda.com上的类(class)我的问题涉及第4章“C/C++基本培训类(class)中的宏警告”中的一系列代码。我已按照所有设置程序在Mac上正确设置Xcode和Eclipse,在PC上正确设置Eclipse。当我在MAC和PC上运行这段代码时,我得到了不同的结果。只是想了解为什么会发生这种情况,以及我可以做些什么来在两者上获得相同的结果。代码如下:

c++ - C 和 C++ 之间的内存布局兼容性

我正在构建一个使用许多函数和struct的C++库在C库中定义。为了避免将任何代码移植到C++,我将典型的条件预处理添加到C头文件中。例如,//my_struct.hoftheClibrary#include#ifdef__cplusplusextern"C"{#endiftypedefstruct{doubled1,d2,d3;#ifdef__cplusplusstd::complexz1,z2,z3;std::complex*pz;#elsedoublecomplexz1,z2,z3;doublecomplex*pz;#endifinti,j,k;}my_struct;//Memo

c++ - 一些随机的 C 问题(ascii 魔法和位运算符)

我正在尝试学习C编程,我正在研究一些源代码,但有些东西我不明白,尤其是关于位运算符。我阅读了一些关于此的网站,我对它们的作用有了一些了解,但是当我回头查看这些代码时,我无法理解它们使用的原因和方式。我的第一个问题与按位运算符无关,而是一些ascii魔术:谁能给我解释一下下面的代码是如何工作的?chara=3;intx=a-'0';我知道这样做是为了将char转换为int,但我不明白其背后的逻辑。为什么/如何运作?现在,关于按位运算符,我真的迷失在这里。这段代码是做什么的?if(~pointer->intX&(1我在某处读到~反转位,但我看不出这条语句在做什么以及为什么要这样做。与此行相

c++ - 在 C 中创建 cout 函数?

我假设大多数C++编译器都是用汇编语言编写的。这使它们完全不同的语言(我可能是错的)。也就是说,如果我要创建一个cout普通旧C的样式函数,我该怎么做?cout有一些非常令人印象深刻的功能以这个片段为例://endlnotonlyprintsanewlinebutalsoflushesthestreamcout我很确定在C中可以将其转换为:printf("HelloWorld!\n");fflush(1);//stdout=1下一项业务,运营商。在C++中,这很容易(运算符重载),但我想不出在C中执行此操作的单一方法。 最佳答案 在